home *** CD-ROM | disk | FTP | other *** search
- (c) Copyright 1993 Commodore-Amiga, Inc. All rights reserved.
- The information contained herein is subject to change without notice,
- and is provided "as is" without warranty of any kind, either expressed
- or implied. The entire risk as to the use of this information is
- assumed by the user.
-
-
- A1200 CPU Card Expansion RAM
-
-
- by Michael Sinz
-
-
-
-
- When the Amiga OS boots, it automatically notices and utilizes
- expansion hardware (such as RAM). Prior to the A3000, the only CPU
- native to any Amiga was the MC68000, which could only address a
- 24-bit wide address space. As a result, the address space that was
- available to these machines was only 24 bits wide. CPU expansion
- products for the MC68000-based Amigas (like the A2630 for the A2000)
- can utilize address space beyond the 24-bit limit, but the CPU board
- cannot use the AutoConfig process to add expansion RAM in the address
- space beyond the 24-bit limit.
-
- Like the MC68000 based Amigas, the Amiga 1200 also has a CPU that
- only addresses a 24-bit wide address space, the MC68EC020. Also like
- most of the MC68000 based Amigas, it is possible to add a CPU
- expansion device. One way the A1200 differs from its 24-bit siblings
- is the A1200 has set aside a 128 Megabyte range of address space
- ($0800 0000 through $0FFF FFFF) specifically for such a device (just
- like the A3000). Any expansion RAM on the A1200's CPU card should
- appear in this range.
-
- The Release 3 OS in the current A1200 is not smart enough to
- recognize a 32-bit CPU expansion device vs. a 24-bit expansion
- device. As a result, the system assumes that the expansion device is
- a 24-bit expansion device. If a user expands their A1200 with a
- 32-bit CPU card that has 32-bit expansion memory on it, the OS cannot
- automatically add the CPU card's expansion memory during the
- autoconfig process. The CPU card's ROM has to add the memory to the
- system.
-
- The code to make the A1200 smart enough to recognize a 32-bit CPU
- card will be in a future ROM revision. This change will allow the OS
- to automatically notice and add the CPU card's expansion RAM. This
- makes it possible for the system to add this 32-bit memory to the
- A1200's system memory relatively early in the boot process. Because
- the memory is available earlier in the boot process, Exec has the
- opportunity to use the 32-bit memory for system purposes (this can
- include the supervisor stack, ExecBase, and most other library bases).
-
- This change presents a minor problem for an A1200 CPU card that adds
- its own memory. Before the CPU card can add its memory to the system
- memory list, it must make sure the OS has not already added that
- memory. The CPU card can use the following code to test if the A1200
- has already added the CPU card's expansion memory. This code queries
- the system about the type of memory located at the low end of the
- coprocessor slot expansion address range. If the system has already
- added memory at this location, TypeOfMem() returns the
- characteristics of that memory. If no memory is at that location,
- TypeOfMem() returns zero.
-
-
- /*
- * Note that we check the memory 16K from the start as the
- * first few bytes may have been used by the OS when doing
- * the automatic testing...
- */
- if (!TypeOfMem(0x08001000))
- {
- /*
- * If TypeOfMem() returned 0, the memory does not
- * exist. At this point, you can do whatever
- * memory tests that may be needed and then
- * AddMemList() the memory as needed.
- *
- * **NOTE** Do *NOT* do the memory test if the memory
- * has already been added as it may be in use by some
- * very important things, including interrupt vectors
- * and/or code.
- */
- AddMemList(size,MEMF_FAST|MEMF_PUBLIC,pri,0x08000000,"CPU RAM");
- }
-
-
- More About the New A1200 Code
-
- The code to make the A1200 detect 32-bit CPU cards will also notice
- ``natural wrapping'' in the board's memory. If a board has only a
- limited amount of memory, it is possible to design the board so that
- the physical memory is accessible at many addresses at regular
- address intervals. For example, if the board has four megabytes of
- memory, that memory could be accessed at four megabyte intervals
- (address $0800 0000, $0840 0000, $0880 0000, and so on).
-
- Because the OS notices the wrap, CPU cards can use a more economical
- design because they don't have to be as complex. It also cuts down
- on the need for jumpers or switch settings. The code requires that
- the A1200 CPU board's memory sizes be in multiples of 1 megabyte
- (512K is not supported).
-